// const state = {};

// const getters = {};

// const actions = {};

// const mutations = {};

// export default {
//   namespaced: true,
//   state,
//   getters,
//   actions,
//   mutations,
// };

import { reqLogin, reqLogout } from "@/api/user";

// 从本地读取数据
const initState = JSON.parse(localStorage.getItem("user")) || {
  token: "",
  nickName: "",
};

export default {
  // 开启命名空间，所有vuex模块的内容都是独立，不会互相影响。
  // 不开启命名空间，所有vuex模块的actions/mutations命名空间是共享的
  namespaced: true,
  // 多个模块（至少两个）共享的数据
  // 当前模块管理的状态数据
  // state: {
  //   // 给数据一个初始化值
  //   token: "",
  //   nickName: "",
  // },
  state: initState,
  // 只读的计算属性数据
  getters: {},
  // 发送请求的操作（负责与后端进行交互）
  actions: {
    // action函数接受两个参数：context, 触发action函数传递参数
    // context当前模块对象（state,getters,dispatch,commit）,
    async login({ commit }, { phone, password }) {
      // 发送请求，获取数据
      const user = await reqLogin(phone, password);
      // 触发mutation函数。将数据传递过去，由mutation函数更新数据
      commit("LOGIN", user);
    },
    async logout({ commit }) {
      await reqLogout(); // 发送请求，删除服务器token
      commit("LOGOUT");
    },
  },
  // 直接修改vuex数据方法
  mutations: {
    // mutation函数接受两个参数：state, 触发mutation函数传递参数
    // state就是当前模块的state数据
    LOGIN(state, user) {
      // 将数据存储在vuex中了
      state.nickName = user.nickName;
      state.token = user.token;
      // 持久化存储
      localStorage.setItem("user", JSON.stringify(user));
    },
    LOGOUT(state) {
      // 删除浏览器储存的数据
      state.nickName = "";
      state.token = "";

      localStorage.removeItem("user");
    },
  },
};
